package top.infopub.mgr.mkt.service;

import com.github.pagehelper.Page;

import top.infopub.generic.GenericService;
import top.infopub.mgr.common.vo.RspVo;
import top.infopub.mgr.mkt.domain.ProTrackDomain;
import top.infopub.mgr.mkt.jsonvo.CollectJsonVo;
import top.infopub.mgr.mkt.vo.ProTrackVo;
import top.infopub.mgr.mkt.vo.TrackVo;
import top.infopub.model.mkt.*;
import top.infopub.security.vo.AuthorizationVO;

import java.util.List;

public interface ProTrackService extends GenericService<ProTrack, String> {

    Page<ProTrackDomain> selectByDomainWhere(Page<ProTrackDomain> page, ProTrackVo proTrackVo);
    Page<ProTrackDomain> selectDistinctByDomainWhere(Page<ProTrackDomain> page, ProTrackVo proTrackVo);
    Page<ProTrackDomain> selectMyCheckByDomainWhere(Page<ProTrackDomain> page,
                                                    ProTrackVo proTrackVo);

    void saveProTrack(ProTrack proTrack);

    ProTrackDomain selectDomainById(String id);

    CollectJsonVo queryDetailById(String proCode);

    RspVo saveAll(ProjectInfo proInfo, List<AfterSummaryCoop> summCoopList, ProjectSubInfo proSubInfo, List<ProjectRisk> riskList, List<ProjectAttachment> attachmentList, List<ProProgress> proProgresses, ProTrack proTracks, AuthorizationVO userDtl,Integer submitType,String bodyStr,TrackInfo trackInfo);

    Page<ProTrackDomain> selectPageByDomainWhere(Page<ProTrackDomain> page, ProTrackVo proTrackVo);

    ProTrack selectByProCode(String proCode);

    Page<ProTrackDomain> selectByTrackPage(Page<ProTrackDomain> page, String proCode);

    Page<ProTrackDomain> selectByTrackVo(Page<ProTrackDomain> page, TrackVo trackVo);

    RspVo queryDetail(String proCode);
}
